草庐IT

c++ - XML Schema 到 C++ 类

全部标签

C - 在 strdup() 之后释放内存

我正在学习LearnCtheHardway在线类(class)。在下面的代码示例中,我不明白为什么需要两次free()调用。我以为只需要调用一次free(),因为只有一个malloc()发生。有人能解释一下为什么我们需要两个吗?如果我注释掉free(who->name);那么valgrind会告诉我我丢失了一block内存,就像这样;LEAKSUMMARY:definitelylost:21bytesin2blocks代码如下:#include#include#include#includestructPerson{char*name;intage;intheight;intweigh

C - 在 strdup() 之后释放内存

我正在学习LearnCtheHardway在线类(class)。在下面的代码示例中,我不明白为什么需要两次free()调用。我以为只需要调用一次free(),因为只有一个malloc()发生。有人能解释一下为什么我们需要两个吗?如果我注释掉free(who->name);那么valgrind会告诉我我丢失了一block内存,就像这样;LEAKSUMMARY:definitelylost:21bytesin2blocks代码如下:#include#include#include#includestructPerson{char*name;intage;intheight;intweigh

javascript - JavaScript 中类型化数组的优点是它们在 C 中的工作方式相同还是相似?

我一直在玩TypedArrays在JavaScript中。varbuffer=newArrayBuffer(16);varint32View=newInt32Array(buffer);我想普通数组(JavaScript中的[1,257,true])性能很差,因为它们的值可以是任何类型,因此,在内存中达到偏移量并非易事。我最初认为JavaScript数组下标的工作方式与对象相同(因为它们有很多相似之处),并且是hashmap基于,需要基于哈希的查找。但我还没有找到太多可信的信息来证实这一点。因此,我认为TypedArrays表现如此出色的原因是因为它们像C中的普通数组一样工作,它们总是

javascript - JavaScript 中类型化数组的优点是它们在 C 中的工作方式相同还是相似?

我一直在玩TypedArrays在JavaScript中。varbuffer=newArrayBuffer(16);varint32View=newInt32Array(buffer);我想普通数组(JavaScript中的[1,257,true])性能很差,因为它们的值可以是任何类型,因此,在内存中达到偏移量并非易事。我最初认为JavaScript数组下标的工作方式与对象相同(因为它们有很多相似之处),并且是hashmap基于,需要基于哈希的查找。但我还没有找到太多可信的信息来证实这一点。因此,我认为TypedArrays表现如此出色的原因是因为它们像C中的普通数组一样工作,它们总是

c - C的智能指针/安全内存管理?

我和我认为许多其他人在使用智能指针来包装C++中的不安全内存操作(使用RAII等)方面取得了巨大成功。但是,当您有析构函数、类、运算符重载等时,包装内存管理更容易实现。对于使用原始C99编写的人,您可以指出哪里(不是双关语)来帮助安全内存管理?谢谢。 最佳答案 这个问题有点老了,但我想我会花时间链接到我的smartpointerlibrary用于GNU编译器(GCC、Clang、ICC、MinGW、...)。这个实现依赖于清理变量属性,一个GNU扩展,在超出范围时自动释放内存,因此,不是ISOC99,而是带有GNU扩展的C99。例子

c - C的智能指针/安全内存管理?

我和我认为许多其他人在使用智能指针来包装C++中的不安全内存操作(使用RAII等)方面取得了巨大成功。但是,当您有析构函数、类、运算符重载等时,包装内存管理更容易实现。对于使用原始C99编写的人,您可以指出哪里(不是双关语)来帮助安全内存管理?谢谢。 最佳答案 这个问题有点老了,但我想我会花时间链接到我的smartpointerlibrary用于GNU编译器(GCC、Clang、ICC、MinGW、...)。这个实现依赖于清理变量属性,一个GNU扩展,在超出范围时自动释放内存,因此,不是ISOC99,而是带有GNU扩展的C99。例子

c - 我的变量在 C 中存储在内存的哪个位置?

考虑到内存分为数据、堆、栈、代码四段,全局变量、静态变量、常量数据类型、局部变量(在函数中定义和声明)、变量(在main函数中)、指针和动态分配的空间(使用malloc和calloc)存储在内存中?我认为它们将被分配如下:全局变量------->数据静态变量------->数据常量数据类型----->代码局部变量(在函数中声明和定义)-------->栈在主函数中声明和定义的变量----->堆指针(例如,char*arr、int*arr)------->堆动态分配空间(使用malloc和calloc)-------->堆栈我只是从C的角度来指代这些变量。如果我是C新手,如果我错了,请纠

c - 我的变量在 C 中存储在内存的哪个位置?

考虑到内存分为数据、堆、栈、代码四段,全局变量、静态变量、常量数据类型、局部变量(在函数中定义和声明)、变量(在main函数中)、指针和动态分配的空间(使用malloc和calloc)存储在内存中?我认为它们将被分配如下:全局变量------->数据静态变量------->数据常量数据类型----->代码局部变量(在函数中声明和定义)-------->栈在主函数中声明和定义的变量----->堆指针(例如,char*arr、int*arr)------->堆动态分配空间(使用malloc和calloc)-------->堆栈我只是从C的角度来指代这些变量。如果我是C新手,如果我错了,请纠

c++ - C 与 C++ 在内存分配方面的性能

我计划参与开发用C语言编写的代码,用于复杂问题的蒙特卡罗分析。此代码在内存中分配大量数据数组以加快其性能,因此代码作者选择了C而不是C++,声称可以使用C编写更快、更可靠(关于内存泄漏)的代码。你同意吗?如果您在计算过程中需要在内存中存储4-16GB的数据数组,您会选择什么? 最佳答案 绝对是C++。默认情况下,两者之间没有显着差异,但是C++提供了一些C没有的东西:构造函数/析构函数。这些可让您自动执行大部分内存管理,从而提高可靠性。每类分配器。这些使您可以根据特定对象的设计和/或使用方式来优化分配。如果您需要大量小对象(举一个明

c++ - C 与 C++ 在内存分配方面的性能

我计划参与开发用C语言编写的代码,用于复杂问题的蒙特卡罗分析。此代码在内存中分配大量数据数组以加快其性能,因此代码作者选择了C而不是C++,声称可以使用C编写更快、更可靠(关于内存泄漏)的代码。你同意吗?如果您在计算过程中需要在内存中存储4-16GB的数据数组,您会选择什么? 最佳答案 绝对是C++。默认情况下,两者之间没有显着差异,但是C++提供了一些C没有的东西:构造函数/析构函数。这些可让您自动执行大部分内存管理,从而提高可靠性。每类分配器。这些使您可以根据特定对象的设计和/或使用方式来优化分配。如果您需要大量小对象(举一个明